The process of storing or moving information within a computer system is often time consuming and inefficient. This can be seen in the cases of storing state information and in storing data to external memory.
The process of storing state information from a central processing unit's ("CPU's") registers is usually accomplished by pushing the information onto the system's stack when the CPU is interrupted, and then popping the information off of the stack when the CPU resumes that task. Each of the registers is pushed and popped serially and the operations are all controlled by the CPU. The time required by the CPU is even greater in a context-switching or multi-tasking environment where this process occurs on a regular basis as the CPU switches between tasks that are incomplete.
The process of moving data between memory locations is also a time intensive operation for the CPU. In a memory swap operation, for example, the CPU needs to perform two reads and two writes on the external bus and an internal temporary store. When large blocks are moved, this process is repeated for every word, and it all needs to be controlled by the CPU. Note that this operation is different from the memory access operations of an inpuvoutput device which can often be controlled with a Direct Memory Access ("DMA") Controller.
Accordingly, there is a need for a system of storing state information, and of storing or moving data in memory which overcomes the above problems.